package cn.genmer.test.security.utils;

import cn.genmer.test.security.common.CommonResult;

/**
 *  腾讯地图分词 - 地址解析（地址切分、标签与 POI 实体提取）
 *
 *  附件 A：POI 角色代码表
 *  值 含义  举例
 *  10 省 安徽省
 *  11 市 北京市
 *  12 区 海淀区
 *  13 子区 尽量细化
 *  1301 功能区 新区、开发区、高新区、高教园、经济开发区、技术开发区、经济技术开发区、 文化开发区、综合开发区、科技开发区、软件园、科技园、工业园、创业园、 产业基地、产业园、总部基地
 *  1303 商圈 国贸（不要出现乡镇、地名）
 *  1305 街道、乡镇、农 林场 东升镇（行政地名）+农场、林场
 *  1307 村 白各庄、前榆村（行政地名）
 *  14 道路 北四环西路
 *  15 poi 银科大厦
 *  16 数量词 即数词+量词
 * 1601 门牌号 14 号、
 * 1001 弄
 * 1602 zone 一期 A 区
 * 1603 楼牌（栋）号 A 栋 A 座 3#、 3#楼
 * 1604 单元号 一单元
 * 1605 楼层号 7 层
 * 1606 房间号 701 室
 * 1607 距离 100 米
 * 1608 门 东门
 * 1609 特殊门地址 裙楼 地下室
 * 2 方位词 东、南
 * 8 交叉口 交叉口
 * 9 模糊区域 郊区、城区、市区、县城
 * 3 连词 与、和
 * 5 数字 第 1、95
 * 4 分隔符 （、“、”# 7 字母 A、B、c 29 废词 电话、门卫收、人名等人工判别的无用词。
 * 30 特殊词 在词表但暂未划分到合适角色的特殊词 0 unknown 不在词表的词
 * 17 省key 新疆
 * 18 市key 北京
 * 19 区key 海淀
 * 20 子区key
 * 21 省后缀 回族自治区
 * 22 市后缀 市
 * 23 区后缀 区
 * 24 子区后缀 13 的后缀
 * 25 道路后缀 街、路、大道、东路、西路、东段、一段 26 poi 后缀 类别词、不完整的 POI、POI 通名 27 数量词后缀 16 角色的各种后缀 2701 门牌号后缀 号 #号院 2702 zone 后缀 期 片 2703 楼牌栋号后缀 楼 座 2704 单元号后缀 单元
 * 2705 楼层好后缀 层 楼 2706 房间号后缀 室 2707 距离后缀 米 2708 门后缀 门 2709 特殊门址后缀 底商 28 内部机构 公司的部门、医院的科室等
 */
public class QmapUtils {

    private static final String TENCENT_ADDRESS_RESOLUTION_URL = "https://apis.map.qq.com/ws/geocoder/v1/?";
    private static final String TENCENT_ADDRESS_KEYWORD = "smart_address=";
    private static final String TENCENT_ADDRESS_RESOLUTION_KEY = "&key=XABBZ-M4QWJ-EG4FX-FROJS-MYSEK-G2B7V";
    private static final String TENCENT_ADDRESS_RESOLUTION_PUBLIC_PARAMS = "&addition_fields=town,town_code,town_reliability,split_address";


    public static void main(String[] args) {
        System.out.println(addressAnalysis("福建省厦门市嘉庚体育馆"));
    }

    /**
     * 腾讯地图分词 - 地址解析（地址切分、标签与 POI 实体提取）
     * @return
     */
    public static String addressAnalysis(String address) {
        String url = TENCENT_ADDRESS_RESOLUTION_URL + TENCENT_ADDRESS_KEYWORD + address + TENCENT_ADDRESS_RESOLUTION_KEY + TENCENT_ADDRESS_RESOLUTION_PUBLIC_PARAMS;

        CommonResult commonResult = HttpSendClient.doGet(url.trim());
        return commonResult.getData().toString();
    }
}
